#ifndef FORTRESS_PLAYER_H
#define FORTRESS_PLAYER_H
#include "character.h"
#include <vector>


namespace fortress
{
	class map;
	class view;
	class player : public character
	{

	private:
		friend class boost::serialization::access;
		template<class Archive>
		void serialize(Archive & ar, const unsigned int version);

		friend void fortress::Engine::updateWorld(bool playerTurn);
		int turns;
		view * gameView;
		bool pickupItem();
		void showInventory();

		bool sendEvent(playerEvents, moveDirections); 

	public:
		player();
		player(int setStrength, int setIntelligence, int setDexterity, int setConstitution, int setCharisma, int setLuck, view * setView);
		~player();
		
		void explore();
		void setView(view * newView);
		virtual void setHealth(int newHp, int newMaxHp);
		virtual void adjustHealth(int amt);
		virtual void sense(eventStructure const & sent, character const & target, bool eyeshot, bool adjacent);

		virtual bool exec(int, int);
		virtual bool doEvent(eventStructure const & sent);
		virtual void message(std::string const & message);

		bool requestRedraw;
	};
}
#endif